package es.deusto.ingenieria.is.tsp.formulation.heuristics;

import es.deusto.ingenieria.is.search.algorithms.Node;
import es.deusto.ingenieria.is.search.algorithms.heuristic.EvaluationFunction;
import es.deusto.ingenieria.is.search.tsp.formulation.EnvironmentMap;

/**Devuelve la distancia desde el nodo incial hasta el ultimo nodo visitado con Manhattan
 * @author Kevin e Inigo
 *
 */
public class DistanciaManhattan extends EvaluationFunction{

	/* (non-Javadoc) Calculo del coste acumulado desde el nodo inicial hasta el nodo actual
	 * @see es.deusto.ingenieria.is.search.algorithms.heuristic.EvaluationFunction#calculateG(es.deusto.ingenieria.is.search.algorithms.Node)
	 */
	@Override
	public double calculateG(Node arg0) {
		//La heuristica
		EnvironmentMap environment = (EnvironmentMap) arg0.getState();
		//return environment.getCiudadMenorCoste();
		return environment.getDistanciaManhattan();
	}

	/* (non-Javadoc) Calculo de la distancia estima entre dos nodos, en este caso al utilizarlo desde coste uniforme es preciso retornar 0
	 * @see es.deusto.ingenieria.is.search.algorithms.heuristic.EvaluationFunction#calculateH(es.deusto.ingenieria.is.search.algorithms.Node)
	 */
	@Override
	public double calculateH(Node arg0) {
		return 0;
	}

}
